Уведомление в Пульт.Онлайн имеет текстовый формат и отправляются при изменении триггерной переменной. В качестве триггерной переменной может выступать тревожная и виртуальная переменные.
Уведомление может состоять из блоков, #директив
и %подстановок%
. Директивы позволяют ограничить круг получателей и выбрать по значениям переменных и других проектных данных требуемый блок для рассылки. Простейшее уведомление представляет собой произвольную строку текста и рассылается всем пользователям проекта, имеющим доступ к триггерной переменной при любом изменении триггерной переменной.
Если текст уведомления начинается с директивы #template
, в качестве текста будет использован текст из шаблона уведомления (Редактор / Уведомления), указанного в значении директивы #template
, например, тревожные переменные по умолчанию настроены на шаблон default_alarm.ntf
:
#template default_alarm.ntf
Уведомление может состоять из нескольких блоков, включать #директивы
и %подстановки%
. Директивы и подстановки опциональны. Простая строка текста является валидным уведомлением и представляет собой один блок. Общий формат уведомления следующий:
#директива1_блока_1 значение_директивы_1
#директива2_блока_1 значение_директивы_2
#директиваN_блока_1 значение_директивы_N
Текст блока 1 с %подстановками%
#директива1_блока_2 значение_директивы_1
#директива2_блока_2 значение_директивы_2
#директиваN_блока_2 значение_директивы_N
Текст блока 2 с %подстановками%
...
#директива1_блока_3 значение_директивы_1
#директива2_блока_3 значение_директивы_2
#директиваN_блока_N значение_директивы_N
Текст блока N с %подстановками%
Общие правила:
#директивы
.#cmd
(значение данной директивы содержит команду командной строки).%подстановки%
для включения в соответствующие места текста требуемых значений переменных или проектных данных, например, параметров узла.Рассылка выполняется по следующему алгоритму:
#template
или прямой текст).#if
или не имеющего директивы #if
, а также имеющего директиву #cmd
с командой командной строки.#cmd
заполняются подстановками и выполняется отправка значения данной директивы в качестве команды командной строки. Для канала Командная строка текст блока игнорируется и не отправляется.interface
, cmd
, telegram
, email
, sms
)#if
.При этом, директива #if
может использоваться для создания блоков разного формата для разных каналов. Например, в канал telegram
отправляется сообщение в формате Markdown, а в канал interface
сообщение в формате HTML. Пример уведомления с директивами #if
для разделения каналов:
#if channel_telegram
#telegram_parse_mode MarkdownV2
**Авария %var__desc%**: %var__alarm_action_name%
#if channel_interface
<b>Авария %var__desc%</b>: %var__alarm_action_name
Здесь #if channel_telegram
и #if channel_interface
сработают каждый на соответствующем канале рассылки. Директива #telegram_parse_mode MarkdownV2
включает поддержку форматирования Markdown в telegram-сообщении (вывод **Авария %var__desc%**
жирным шрифтом).
Сообщения отправляются пользователям в один или несколько каналов, в зависимости от настроек профиля конкретного пользователя, где можно указать, по каким каналам и какой тип сообщений принимать.
interface
- Сообщения по данному каналу доставляются в Интерфейс пользователя в панель уведомлений
telegram
- Сообщения отправляются пользователю по Telegram
email
, - Сообщения отправляются пользователю по Email
sms
- Сообщения отправляются пользователю по SMS
cmd
- Сообщения из директивы #cmd
в виде команд отправляются в командную строку сервера (не относится к пользователям).
#if <логическое_выражение>
- директива используется для определения блока для рассылки. Рассылается только первый блок, успешно прошедший директиву #if, если она представлена в блоке. Если директива #if не представлена, считается, что блок прошел #if и рассылается. Остальные блоки игнорируются.
Пример выражения: %user_login_ivanov% & %P1_N1_var1__value%>100
#cmd <команда_командной_строки>
- данная директива применяется только к каналу рассылки "Командная строка". Значение директивы будет отправлено сервису exec для выполнения в качестве команды командной строки.
#interface_header <заголовок_сообщения>
- директива устанавливает произвольный заголовок сообщению, которое отображается в Интерфейсе, в панели уведомлений. Данная директива распространяется только на уведомления, отправляемые в Интерфейс.
#telegram_bot <имя_бота>
- директива позволяет направить уведомление в определенный бот, указанный в настройках сервиса chnl_telegram (при наличии нескольких ботов). Если директива не указана, уведомление будет отправлено через первый доступный бот. Директива распространяется только на уведомления, рассылаемые в Telegram.
#telegram_parse_mode <MarkdownV2|HTML|Markdown>
- директива устанавливает опцию parse_mode при отправке уведомлений через Telegram. Данная опция позволяет применять один из вариантов форматирования к тексту уведомления (MarkdownV2, HTML или Markdown - подробнее см. API Telegram). Директива распространяется только на уведомления, рассылаемые в Telegram.
#telegram_disable_web_page_preview <1|0>
- если 1, директива отключает показ превью веб-страниц по ссылкам в тексте уведомления. Директива распространяется только на уведомления, рассылаемые в Telegram.
%message%
- определено только у сообщений от пользователей и содержит текст сообщения
%sender%
- имя отправителя, определено только у сообщений от пользователей
%type%
- код типа сообщения
%type_name%
- имя типа сообщения
%user_login_<логин>%
- 1 если блок рассылается пользователю с указанным логином, может использоваться в #if
для таргетирования по логину пользователя
%user_group_<имя_группы>%
- 1 если пользователь в указанной группе, может использоваться в #if для таргетирования по группам
%user_admin%
- 1 если пользователь администратор системы
%user_demo%
- 1 если демо-пользователь
%user_anonymous%
- 1 если анонимный пользователь
%user_login%
- логин пользователя
%user_name%
- имя пользователя
%channel_interface%
- текущий канал "Интерфейс"
%channel_cmd%
- текущий канал "Командная строка"
%channel_telegram%
- текущий канал "Telegram"
%channel_sms%
- текущий канал "SMS"
%channel_email%
- текущий канал "Email"
%var__project_name%
- проектное имя переменной (напр. N1_var1)
%var__local_name%
- локальное имя переменной (напр. var1)
%var__name%
- глобальное имя переменной (напр. P1_N1_var1)
%var__desc%
- описание переменной
%var__comment%
- комментарий переменной
%var__time%
- время последнего изменения (timestamp_ms)
%var__value%
- последнее значение
%var__error%
- код последней ошибки
%var__time_str%
- время последнего изменения в виде строки даты и времени
%var__node_path%
- полный путь узла переменной
%var__node_pseudo_path%
- псевдо-путь (сокращенный)
%var__node_prefix%
- префикс узла (напр. P1_N1)
%var__node_project_url%
- URL проекта
%var__node_project_name%
- имя проекта
%var__node_project_html_link%
- HTML-код ссылки на проект
%var__node_project_md_link%
- Markdown-код ссылки на проект
%var__node_project_alarms_html_link%
- HTML-код ссылки на окно тревог проекта
%var__node_project_alarms_md_link%
- Markdown-код ссылки на окно тревог проекта
%var__node_param_<имя_параметра>%
- текстовое значение указанного параметра узла (напр. %var__node_param_slave_id%)
%var__node_url%
- URL узла
%var__node_html_link%
- HTML-код ссылки на узел
%var__node_md_link%
- Markdown-код ссылки на узел
%var__alarm_active%
- 1, если тревога активная
%var__alarm_unack%
- 1, если тревога неквитированная
%var__alarm_repeated%
- 1, если тревога повторная (до первого квитирования)
%var__alarm_class%
- код класса тревоги (3 - авария, 2 - неисправность, 1 - предупреждение, 0 - оповещение)
%var__alarm_class_name%
- имя класса тревоги
%var__alarm_action%
- код события тревоги (1 - активация, 2 - нормализация, 3 - квитирование, 4 - отмена квитирования, 5 - блокировка, 6 - разблокировка)
%var__alarm_action_name%
- имя события тревоги
%var__alarm_action_act%
- 1, если активация тревоги
%var__alarm_action_norm%
- 1, если нормализация тревоги
%var__alarm_action_ack%
- 1, если квитирование тревоги
%var__alarm_action_unack%
- 1, если отмена квитирования тревоги
%var__alarm_action_shlv%
- 1, если блокировка тревоги
%var__alarm_action_unshlv%
- 1, если разблокировка тревоги
%var__alarm_simple_link_text%
- текст ссылки на тревогу
%var__alarm_simple_link_url%
- URL ссылки на тревогу
%var__alarm_html_links%
- HTML-код ссылок на тревогу на экранах или в узле
%var__alarm_md_links%
- Markdown-код ссылок на тревогу на экранах или в узле
%var__alarm_html_link%
- HTML-код ссылки на окно тревоги
%var__alarm_md_link%
- Markdown-код ссылки на окно тревоги
%var__payload_<имя_поля>%
- значение поля payload
Подстановка свойств, аналогичных свойствам переменной-триггера, доступны для любых переменных, а не только для триггерной переменной. Для вывода свойств произвольной переменной вместо %var__...%
укажите имя переменной (глобальное, проектное или локальное относительно триггерной), например:
Узел: %N1_var1__node_pseudo_path%
Уставка: %P1_N3_setpoint__value% °C
Все текущие доступные подстановки можно вывести, вставив в текст уведомления подстановку %debug%
.
Пример уведомления с %debug%
:
#if user_login_admin
Тестовое уведомление
%debug%
Такое уведомление будет разослано только пользователю admin (#if user_login_admin
) и будет содержать полный список подстановок. Пример полученного сообщения:
Тестовое уведомление
>>>>>>>> DEBUG INFO <<<<<<<<
var__node_prefix: P1_N1
var__global_name: P1_N1_alarm_filter
var__project_name: N1_alarm_filter
var__local_name: alarm_filter
var__name: alarm_filter
var__desc: Фильтр загрязнен
var__comment:
var__time: 1747591489133
var__value: 0
var__error: 0
var__time_str: 18.05.25 21:04:49
var__node_path: /projects/Проект1.project/nodes/Узел1.node
var__node_pseudo_path: Узел1
var__node_prefix: P1_N1
var__node_project_url: http://172.22.204.56/projects/Проект1.project
var__node_project_name: Проект1
var__node_project_html_link: Проект1
var__node_project_md_link: [Проект1](http://172.22.204.56#interface/project?path=/projects/Проект1.project)
var__node_project_alarms_html_link: Проект1
var__node_project_alarms_md_link: [Проект1](http://172.22.204.56#interface/alarms?path=/projects/Проект1.project/alarms)
var__node_param_param1: параметр 1
var__node_param_param2: параметр 2
var__node_param_param3: параметр 3
var__node_url: http://172.22.204.56#interface/screen?path=/projects/Проект1.project/nodes/Узел1.node
var__node_html_link: Узел1
var__node_md_link: [Узел1](http://172.22.204.56#interface/screen?path=/projects/Проект1.project/nodes/Узел1.node)
var__alarm_active: 0
var__alarm_unack: 0
var__alarm_repeated: 0
var__alarm_class: 3
var__alarm_class_name: Авария
var__alarm_action: 3
var__alarm_action_name: Квитирование
var__alarm_action_act:
var__alarm_action_norm:
var__alarm_action_ack: 1
var__alarm_action_unack:
var__alarm_action_shlv:
var__alarm_action_unshlv:
var__alarm_simple_link_text: Экран1
var__alarm_simple_link_url: http://172.22.204.56#interface/screen?path=/projects/Проект1.project/screens/Экран1.screen
var__alarm_html_links: Узел1 Экран1
var__alarm_md_links: [Узел1](http://172.22.204.56#interface/screen?path=/projects/Проект1.project/nodes/Узел1.node)
[Экран1](http://172.22.204.56#interface/screen?path=/projects/Проект1.project/screens/Экран1.screen)
var__alarm_html_link: Фильтр загрязнен
var__alarm_md_link: [Фильтр загрязнен](http://172.22.204.56#interface/alarms?path=/projects/Проект1.project/alarms&alarm=P1_N1_alarm_filter)
var__payload_ac: 3
var__payload_ak: 1
var__payload_us: admin
var__payload_ip: 127.0.0.1
var__payload_tm: 1747591489133
var__payload_cl: 3
var__payload_au: admin
var__payload_cn: 1
type: 115
type_name: Авария: Квитирование
channel_cmd: 0
channel_sms: 0
channel_telegram: 0
channel_email: 0
channel_interface: 1
user_login_admin: 1
user_group_Группа1: 1
user_admin: 1
user_demo: 0
user_anonymous: 0
user_login: admin
user_name: